iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0

昨天討論到例外,而此篇將大致說明對於例外的處理~

例外處理

  • 例外處理的目的是為了讓程式遇到錯誤狀況時,也不會贈成程式潰堤。
    (1) 設定攔截範圍
    (2) 指定攔截的例外類別
    (3) 處理程序
    1.語法:例外處理的指令式透過try、catch、finally三個關鍵字組合的語言來達成
    語法結構如下:
try {
    程式敘述
}catch(例外類別 例外物件名稱){
    例外處理的程式碼
}finally{
    一定會處理的區塊
}

語法解釋:
try{ 區塊範圍內的程式發生例外才會攔截}
catch{處理例外發生的程序}
finally{無論是否發生例外皆會執行程序}

程式範例試做:

import java.util.*;
public class Alex0930_1{
    public static void main(String[] args){
        try{
            Scanner scanner = new Scanner(System.in);
            System.out.print("請輸入分子數:");
            int a = scanner.nextInt();
            System.out.print("請輸入分母數:");
            int b = scanner.nextInt();
            System.out.println(a+"除以"+b+"等於:"+a/b);
        }catch (ArithmeticException e){
            System.out.println("除數不可為0");
        }catch (InputMismatchException e){
            System.out.println("輸入的數值必須為整數數值");
        }
    }
}

(1) 分母為零

請輸入分子數:20
請輸入分母數:0
除數不能為0

(2) 輸入非整數值

請輸入分子數:20
請輸入分母數15.5
輸入的數值必須為整數數值

2.攔截的簡化
發生例外時,catch如果沒有指定攔截該例外,則程式就不會做任何處理,會直接當掉。

  • 因此為避免不確定的例外發生時無法及時處理,所以就是透過不指定特定攔截的例外,只要是例外就全部攔截。
    程式範例試做:
import java.util.*;
public class Alex0930_2 {
    public static void main(String[] args){
        try{
            Scanner scanner = new Scanner(System.in);
            System.out.print("請輸入分子數:")
            int a = scanner.nextInt();
            System.out.print("請輸入分母數:");
            int b = scanner.nextInt();
            System.out.println(a+"除以"+b+"等於:"+a/b);
        }catch (Exception e){
            System.out.println("執行發生例外");
        }
    }
}

3.例外類別的方法

回傳值類型 方法 功用
throwable getCause 取得此例外的Throwable物件,已獲得例外的原因,如果原因不存在或是知,則回傳null。
String getLocalizedMessage() 取得此例外的Throwable物件的局部描述。
String getMessage() 取得此例外物件的說明訊息。
String toString() 取得此例外物件的名稱與簡短說明訊息。

上一篇
Java程式-例外
下一篇
Java程式-拋出&自訂例外
系列文
自學Java物件導向程式語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言